package com.baohua.dao.impl;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.baohua.dao.BaseDao;
import com.baohua.dao.MenuDao;
import com.baohua.model.Menu;


/**
 * MenuDao的实现类
 * @author czp
 *
 */
@Repository("menuDao")
public class MenuDaoImpl extends BaseDao implements MenuDao {

	/**
	 * 根据SQL语句查询菜单列表
	 * @param sql SQL语句
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<Menu> queryMenu(String sql) {
		List<Menu> list = this.getSession().createQuery(sql).list();
		return list;
	}

	/**
	 * 增加菜单
	 * @param menu 菜单对象
	 */
	public void addMenu(Menu menu) {
		this.getHibernateTemplate().save(menu);
	}

	/**
	 * 修改菜单
	 * @param menu  菜单对象
	 */
	public void updateMenu(Menu menu) {
		this.getHibernateTemplate().update(menu);
	}

	/**
	 * 删除菜单
	 * @param menu  菜单对象
	 */

	public void delMenu(Menu menu) {
		this.getHibernateTemplate().delete(menu);
	}


	/**
	 * 根据Sql语句统计菜单的总数
	 * @param sql SQL语句
	 * @return
	 */
	@Override
	public long countMenu(String sql) {
		long count = (Long)this.getSession().createQuery(sql).uniqueResult();
		return count;
	}

	/**
	 * 根据menuNO查询菜单(唯一的)(也用于增加、修改或删除时, 判断对象是否存在等)
	 * @param menuNO 菜单编号
	 * @return
	 */
	@Override
	public Menu queryMenuByMenuNO(String menuNO) {
		Menu menu = (Menu)this.getSession().createQuery("from Menu where menuNO = ?")
				   .setString(0, menuNO).uniqueResult();
				return menu;
	}

}
